<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Hard coding</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Hard_coding"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Hard_coding rootpage-Hard_coding skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Hard coding</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">"Hardcoded" redirects here. For the video game, see <a href="Hardcoded_(video_game)" title="Hardcoded (video game)">Hardcoded (video game)</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p><b>Hard coding</b> (also <b>hard-coding</b> or <b>hardcoding</b>) is the software development practice of embedding data directly into the <a href="Source_code" title="Source code">source code</a> of a <a href="Computer_program" title="Computer program">program</a> or other executable object, as opposed to obtaining the data from external sources or generating it at <a href="Run_time_(program_lifecycle_phase)" class="mw-redirect" title="Run time (program lifecycle phase)">runtime</a>.
</p><p>Hard-coded data typically can be modified only by editing the source code and <a href="Compiling" class="mw-redirect" title="Compiling">recompiling</a> the executable, although it can be changed in <a href="Volatile_memory" title="Volatile memory">memory</a> or on disk using a <a href="Debugger" title="Debugger">debugger</a> or <a href="Hex_editor" title="Hex editor">hex editor</a>.
</p><p>Data that is hard-coded is best suited for unchanging pieces of information, such as <a href="Physical_constant" title="Physical constant">physical constants</a>, <a href="Version_number" class="mw-redirect" title="Version number">version numbers</a>, and static text elements.
</p><p>Soft-coded data, on the other hand, encodes arbitrary information through <a href="User_input" class="mw-redirect" title="User input">user input</a>, <a href="Text_files" class="mw-redirect" title="Text files">text files</a>, <a href="INI_file" title="INI file">INI files</a>, HTTP server responses, configuration files, preprocessor macros, external constants, databases, <a href="Command-line_argument" class="mw-redirect" title="Command-line argument">command-line arguments</a>, and is determined at runtime.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2></div>
<p>Hard coding requires the program's source code to be changed any time the input data or desired format changes, when it might be more convenient to the end user to change the detail by some means outside the program.<sup id="cite_ref-Dustin2002_1-0" class="reference"><a href="#cite_note-Dustin2002-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Hard coding is often required, but can also be considered an <a href="Anti-pattern" title="Anti-pattern">anti-pattern</a>.<sup id="cite_ref-Janca2020_2-0" class="reference"><a href="#cite_note-Janca2020-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Programmers may not have a dynamic user interface solution for the end user worked out but must still deliver the feature or release the program. This is usually temporary but does resolve, in a short-term sense, the pressure to deliver the code. Later, soft coding is done to allow a user to pass on parameters that give the end user a way to modify the results or outcome.
</p><p>The term "hard-coded" was initially used as an analogy to hardwiring circuits, and was meant to convey the inflexibility that results from its usage within software design and implementation.
In the context of run-time extensible <a href="Collaborative_development_environment" title="Collaborative development environment">collaborative development environments</a> such as <a href="Multi-user_dungeon" title="Multi-user dungeon">MUDs</a>, hard coding also refers to developing the core engine of the system responsible for low-level tasks and executing <a href="Scripting_language" title="Scripting language">scripts</a>, as opposed to <b>soft coding</b> which is developing the high-level scripts that get interpreted by the system at <a href="Execution_(computing)" title="Execution (computing)">runtime</a>, with values from external sources, such as <a href="Text_files" class="mw-redirect" title="Text files">text files</a>, <a href="INI_file" title="INI file">INI files</a>, preprocessor <a href="Macro_(computer_science)" title="Macro (computer science)">macros</a>, external constants, <a href="Database" title="Database">databases</a>, <a href="Command-line_argument" class="mw-redirect" title="Command-line argument">command-line arguments</a>, <a href="HTTP" title="HTTP">HTTP</a> <a href="Server_(computing)" title="Server (computing)">server</a> responses, <a href="Configuration_file" title="Configuration file">configuration files</a>, and <a href="User_input" class="mw-redirect" title="User input">user input</a>. In this case, the term is not pejorative and refers to general development, rather than specifically embedding output data.
</p>
<div class="mw-heading mw-heading2"><h2 id="Hard_coding_and_backdoors">Hard coding and backdoors</h2></div>
<p>Hard coding credentials is a popular way of creating a <a href="Backdoor_(computing)" title="Backdoor (computing)">backdoor</a>. Hard coded credentials are usually not visible in configuration files or the output of account-enumeration commands and cannot be easily changed or bypassed by users. If discovered, a user might be able to disable such a backdoor by modifying and rebuilding the program from its <a href="Source_code" title="Source code">source code</a> (<a href="FLOSS" class="mw-redirect" title="FLOSS">if source is publicly available</a>), <a href="Decompiling" class="mw-redirect" title="Decompiling">decompiling</a>, or <a href="Reverse-engineering" class="mw-redirect" title="Reverse-engineering">reverse-engineering</a> <a href="Software" title="Software">software</a>, <a href="Hex_editor" title="Hex editor">directly editing</a> the program's <a href="Binary_code" title="Binary code">binary code</a>, or instituting an integrity check (such as digital signatures, anti-tamper, and <a href="Anti-cheat" class="mw-redirect" title="Anti-cheat">anti-cheat</a>) to prevent the unexpected access, but such actions are often prohibited by an <a href="End-user_license_agreement" title="End-user license agreement">end-user license agreement</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Hard_coding_and_DRM">Hard coding and DRM</h2></div>
<p>As a <a href="Digital_rights_management" title="Digital rights management">digital rights management</a> measure, software developers may hard code a unique <a href="Serial_number" title="Serial number">serial number</a> directly into a program. Or it is common to hard code a <a href="Public_key" class="mw-redirect" title="Public key">public key</a>, creating the DRM for which it is infeasible to create a keygen.
</p><p>On the opposite case, a <a href="Software_cracker" class="mw-redirect" title="Software cracker">software cracker</a> may hard-code a valid serial number to the program or even prevent the executable from asking the user for it, allowing unauthorized copies to be redistributed without the need of entering a valid number, thus sharing the same key for every copy, if one has been hard-coded.
</p>
<div class="mw-heading mw-heading2"><h2 id="Fixed_installation_path">Fixed installation path</h2></div>
<p>If a Windows program is programmed to assume it is always installed to C:\Program Files\Appname and someone tries to install it to a different drive for space or organizational reasons, it may fail to install or to run after installation. This problem might not be identified in the testing process, since the average user installs to the default drive and directory and testing might not include the option of changing the installation directory. However, it is advisable for programmers and developers not to fix the installation path of a program, since the default installation path depends on the operating system, OS version, and <a href="Sysadmin" class="mw-redirect" title="Sysadmin">sysadmin</a> decisions. For example, many installations of <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> use <a href="Drive_letter_assignment#Common_assignments" title="Drive letter assignment">drive C:</a> as their primary <a href="Hard_disk" class="mw-redirect" title="Hard disk">hard disk</a>, but this is not guaranteed.
</p><p>There was a similar issue with <a href="Microprocessor" title="Microprocessor">microprocessors</a> in early computers, which <a href="Reset_(computing)" title="Reset (computing)">started execution</a> at a fixed <a href="Address_space" title="Address space">address</a> in memory.
</p>
<div class="mw-heading mw-heading2"><h2 id="Startup_disk">Startup disk</h2></div>
<p>Some "<a href="Copy_protection" title="Copy protection">copy-protected</a>" programs look for a particular file on a floppy disk or flash drive on startup to verify that they are not unauthorized copies. If the computer is replaced by a newer machine, which doesn't have a floppy drive, the program that requires it now can't be run since the floppy disk can't be inserted.
</p><p>This last example shows why hard coding may turn out to be impractical even when it seems at the time that it would work completely. In the 1980s and 1990s, the great majority of PCs were fitted with at least one floppy drive, but floppy drives later fell out of use. A program hard-coded in that manner 15 years ago could face problems if not updated.
</p>
<div class="mw-heading mw-heading2"><h2 id="Special_folders">Special folders</h2></div>
<p>Some Windows operating systems have so-called <i><a href="Special_Folders" class="mw-redirect" title="Special Folders">Special Folders</a></i> which organize files logically on the hard disk. There are problems that can arise involving hard coding:
</p>
<div class="mw-heading mw-heading3"><h3 id="Profile_path">Profile path</h3></div>
<p>Some Windows programs hard code the profile path to developer-defined locations such as <code>C:\Documents and Settings\<i>Username</i></code>. This is the path for the vast majority of <a href="Windows_2000" title="Windows 2000">Windows 2000</a> or above, but this would cause an error if the profile is stored on a network or otherwise relocated. The proper way to get it is to call the <code>GetUserProfileDirectory</code> function or to resolve the <code>%userprofile%</code> environment variable. Another assumption that developers often make is assuming that the profile is located on a local hard disk.
</p>
<div class="mw-heading mw-heading3"><h3 id="My_Documents_folder_path">My Documents folder path</h3></div>
<p>Some Windows programs hard code the path to <code><a href="My_Documents" title="My Documents">My Documents</a></code> as <code><i>ProfilePath</i>\My Documents</code>. These programs would work on machines running the English version, but on <a href="Internationalization_and_localization" title="Internationalization and localization">localized</a> versions of Windows this folder normally has a different name. For example, in Italian versions the <code>My Documents</code> folder is named <i>Documenti</i>. <code>My Documents</code> may also have been relocated using Folder Redirection in Group Policy in Windows 2000 or above. The proper way to get it is to call the <code>SHGetFolderPath</code> function.
</p>
<div class="mw-heading mw-heading2"><h2 id="Solution">Solution</h2></div>
<p>An indirect reference, such as a variable inside the program called "FileName", could be expanded by accessing a "browse for file" dialogue window, and the program code would not have to be changed if the file moved.
</p><p>Hard coding is especially problematic in preparing the software for translation to other languages.
</p><p>In many cases, a single hard-coded value, such as an array size, may appear several times within the source code of a program. This would be a <a href="Magic_number_(programming)" title="Magic number (programming)">magic number</a>. This may commonly cause a program bug if some of the appearances of the value are modified, but not all of them. Such a bug is hard to find and may remain in the program for a long time. A similar problem may occur if the same hard-coded value is used for more than one parameter value, e.g. an array of 6 elements and a minimum input string length of 6. A programmer may mistakenly change all instances of the value (often using an editor's search-and-replace facility) without checking the code to see how each instance is used. Both situations are avoided by defining <a href="Constant_(programming)" class="mw-redirect" title="Constant (programming)">constants</a>, which associate names with the values, and using the names of the constants for each appearance within the code.
</p><p>One important case of hard coding is when strings are placed directly into the file, which forces translators to edit the source code to translate a program. (There is a tool called <code><a href="Gettext" title="Gettext">gettext</a></code> that permits strings to be left in files, but lets translators translate them without changing the source code; it effectively de-hard codes the strings.)
</p>
<div class="mw-heading mw-heading2"><h2 id="Hard_coding_in_competitions">Hard coding in competitions</h2></div>
<p>In computing competitions such as the <a href="International_Olympiad_in_Informatics" title="International Olympiad in Informatics">International Olympiad in Informatics</a>, contestants are required to write a program with specific input-output pattern according to the requirement of the questions.
</p><p>In rare cases where the possible number of inputs is small enough, a contestant might consider using an approach that maps all possible inputs to their correct outputs. This program would be considered a hard-coded solution as opposed to an <a href="Algorithm" title="Algorithm">algorithmic</a> one (even though the hard-coded program might be the output of an algorithmic program).
</p>
<div class="mw-heading mw-heading2"><h2 id="Soft_coding">Soft coding</h2></div>
<p><b>Soft coding</b> is a <a href="Computer_coding" class="mw-redirect" title="Computer coding">computer coding</a> term that refers to obtaining a value or function from some external resource, such as <a href="Text_files" class="mw-redirect" title="Text files">text files</a>, <a href="INI_file" title="INI file">INI files</a>, <a href="Preprocessor" title="Preprocessor">preprocessor</a> <a href="Macro_(computer_science)" title="Macro (computer science)">macros</a>, external constants, <a href="Configuration_file" title="Configuration file">configuration files</a>, <a href="Command-line_argument" class="mw-redirect" title="Command-line argument">command-line arguments</a>, databases, user input, HTTP server responses. It is the opposite of hard coding, which refers to coding values and functions in the source code.
</p>
<div class="mw-heading mw-heading3"><h3 id="Programming_practice">Programming practice</h3></div>
<p>Avoiding hard coding of commonly altered values is good programming practice. Users of the software should be able to customize it to their needs, within reason, without having to edit the program's source code. Similarly, careful programmers avoid <a href="Magic_number_(programming)#Unnamed_numerical_constants" title="Magic number (programming)">magic numbers</a> in their code to improve its readability and assist maintenance. These practices are generally not referred to as <i>soft coding</i>.
</p><p>The term is generally used where soft coding becomes an <a href="Anti-pattern" title="Anti-pattern">anti-pattern</a>. Abstracting too many values and features can introduce more complexity and maintenance issues than would be experienced with changing the code when required. Soft coding, in this sense, was featured in an article on <a href="The_Daily_WTF" title="The Daily WTF">The Daily WTF</a>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Potential_problems">Potential problems</h3></div>
<p>At the extreme end, soft-coded programs develop their own poorly designed and implemented scripting languages, and configuration files that require advanced programming skills to edit. This can lead to the production of utilities to assist in configuring the original program, and these utilities often end up being soft coded themselves.
</p><p>The boundary between proper configurability and problematic soft-coding changes with the style and nature of a program. Closed-source programs must be very configurable, as the end user does not have access to the source to make any changes. In-house software and software with limited distribution can be less configurable, as distributing altered copies is simpler. Custom-built web applications are often best with limited configurability, as altering the scripts is seldom any harder than altering a configuration file.
</p><p>To avoid soft coding, consider the value to the end user of any additional flexibility you provide, and compare it with the increased complexity and related ongoing maintenance costs the added configurability involves.
</p>
<div class="mw-heading mw-heading3"><h3 id="Achieving_flexibility">Achieving flexibility</h3></div>
<p>Several legitimate design patterns exist for achieving the flexibility that soft coding attempts to provide. An application requiring more flexibility than is appropriate for a configuration file may benefit from the incorporation of a <a href="Scripting_language" title="Scripting language">scripting language</a>. In many cases, the appropriate design is a <a href="Domain-specific_language" title="Domain-specific language">domain-specific language</a> integrated into an established scripting language. Another approach is to move most of an application's functionality into a library, providing an API for writing-related applications quickly.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Closed-source_software" class="mw-redirect" title="Closed-source software">Closed-source software</a></li>
<li><a href="Firmware" title="Firmware">Firmware</a></li>
<li><a href="Inner-platform_effect" title="Inner-platform effect">Inner-platform effect</a></li>
<li><a href="Rule_of_least_power" title="Rule of least power">Rule of least power</a></li>
<li><a href="Self-modifying_code" title="Self-modifying code">Self-modifying code</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-Dustin2002-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-Dustin2002_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFElfriede_Dustin2002" class="citation book cs1">Elfriede Dustin (2002). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=K0qWBUOAf6IC&pg=PA188"><i>Effective Software Testing: 50 Specific Ways to Improve Your Testing</i></a>. Addison-Wesley Professional. pp. 188–. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-201-79429-8</bdi>.</cite></span>
</li>
<li id="cite_note-Janca2020-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-Janca2020_2-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFTanya_Janca2020" class="citation book cs1">Tanya Janca (14 October 2020). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=UT4DEAAAQBAJ&pg=PA15"><i>Alice and Bob Learn Application Security</i></a>. Wiley. pp. 15–. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-119-68740-5</bdi>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://thedailywtf.com/Articles/Soft_Coding.aspx">Softcoding</a> from <a href="The_Daily_WTF" title="The Daily WTF">The Daily WTF</a></span>
</li>
</ol></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-29" href="https://en.wikipedia.org/wiki/?title=Hard_coding&oldid=1292926310">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>